package longestPalindrome;


/**
 * *************************最长回文子串***************************
 *
 * 给你一个字符串 s，找到 s 中最长的回文子串。
 *
 * 示例 1：
 * 输入：s = "babad"
 * 输出："bab"
 * 解释："aba" 同样是符合题意的答案。
 *
 * 示例 2：
 * 输入：s = "cbbd"
 * 输出："bb"
 */
public class Solution {
    public static String longestPalindrome(String s) {
        //  这种方式超时（暴力求解）
        String resultStr = "";
        int resultLength = 0;
        int left = 0;
        int right = left + 1;
        while (left < s.length()) {
            String current = s.substring(left, right);
            if (isPalindrome(current)) {
                if (resultLength < right - left) {
                    resultLength = right - left;
                    resultStr = current;
                }
            }
            if (right >= s.length()) {
                left++;
                right = left + 1;
            } else {
                right++;
            }
        }
        return resultStr;
    }

    /**
     * 描述 是否是回文序列
     * @author lyd
     * @param target 目标字符串
     * @return 是否是回文字符串
     * @created 2022/11/11 15:49
     */
    public static boolean isPalindrome(String target) {
        int length = target.length();
        int lengthHalf = length / 2;
        int l = 0, r = length - 1;
        while (l <= lengthHalf ) {
            if (target.charAt(l) != target.charAt(r)) {
                return false;
            }
            l++;
            r--;
        }
        return true;
    }
    public static void main(String[] args) {
        System.out.println(longestPalindrome("cbbdddddddddddddd1dddddddddddddddd"));
    }
}
